[C] Apaga linha em um Arquivo
Publicado por Enzo de Brito Ferber 06/03/2006
[ Hits: 17.847 ]
Homepage: http://www.maximasonorizacao.com.br
Este script apaga a linha "dita" por um
usuário de um arquivo "dito" pelo mesmo.
Código de minha autoria bem comentado
e simples.... ajuda bastante a entender
manipulação de arquivos, aloção
dinamina de memoria, e maniputação de
strings....
/********************************************************************************************* Programa: apaga.c Autor: Enzo Ferber 'Slackware_10' Propósito: Apaga linha definida por usuário em um arquivo **********************************************************************************************/ #include <stdio.h> #include <stdlib.h> int abreArquivo(char arquivo[]){ FILE *arqEntrada; FILE *arqSaida; int line = 0; int linha = 1; int i; char textoArquivo[100]; char *output; output = (char *)malloc((strlen(arquivo)+strlen(".editado")) * sizeof(char)); strcat(output, arquivo); strcat(output, ".editado"); if((arqEntrada = fopen(arquivo, "r")) == 0){ //testa se o arquivo pode ser aberto printf("Impossivel abrir arquivo...\n"); //informa o erro exit(1); //finaliza execução } if((arqSaida = fopen(output, "w")) == 0){ //testa se o arquivo pode ser aberto printf("Impossivel abrir arquivo...\n"); //informa o erro exit(1); //finaliza execução } printf("Digite a linha a ser apagada no arquivo: "); //pede a linha scanf("%d", &line); //le a linha e armazena na variável 'line' rewind(arqEntrada); //certifica de que o cursor esta no primeiro caractere do arquivo for(i = 0; !feof(arqEntrada);i++){ //incrementa 'i' enquando não for fim de arquivo memset(textoArquivo, '{FONTE}', 100); //inicializa e/ou limpa string 'textoArquivo' fgets(textoArquivo, 101, arqEntrada); //pega uma string de 100 caracteres if(linha == line){ //se a linha for a escolhida fputc('\n', arqSaida); //troca a linha que o usuario quer por nova linha linha = linha + 1; //incrementa o contador de linhas continue; //volta ao inicio do loop sem executar o resto } linha = linha + 1; //incrementa o contador de linas fputs(textoArquivo, arqSaida); //coloca a string 'textoArquivo' no arquivo encoded.txt } printf("O arquivo output %c: %s\n",233, output); free(output); //desaloca espaço alocado para string contendo novo do novo arquivo fclose(arqEntrada); //fecha a stream 'arqEntrada' fclose(arqSaida); //fecha a stream 'arqSaida' } int main(void){ //rotina principal do programa char arquivo[100]; printf("Digite o caminho completo do arquivo: "); __fpurge(stdin); //limpa buffer de entrada scanf("%[^\n]", arquivo); abreArquivo(arquivo); }
Controle de Funcionários (Básico)
Barra de progresso em forma de “roda”
Enviar mensagem ao usuário trabalhando com as opções do php.ini
Meu Fork do Plugin de Integração do CVS para o KDevelop
Compartilhando a tela do Computador no Celular via Deskreen
Como Configurar um Túnel SSH Reverso para Acessar Sua Máquina Local a Partir de uma Máquina Remota
Configuração para desligamento automatizado de Computadores em um Ambiente Comercial
Compartilhamento de Rede com samba em modo Público/Anônimo de forma simples, rápido e fácil
Cups: Mapear/listar todas as impressoras de outro Servidor CUPS de forma rápida e fácil
Criando uma VPC na AWS via CLI
Tem como instalar o gerenciador AMD Adrenalin no Ubuntu 24.04? (15)
Tenho dois Link's ( IP VÁLIDOS ), estou tentando fazer o failover... (0)
Pendrive não formata de jeito nenhum (4)